package user

import (
	"im_sys/apps/im/ws/internal/svc"
	"im_sys/apps/im/ws/ws_server"
)

// OnLine 用户连接到WebSocket服务器，获取所有在线用户，传递给当前在线的用户
func OnLine(svc *svc.ServiceContext) ws_server.HandlerFunc {
	// 对整个服务支持自定义的conn
	return func(server *ws_server.Server, conn *ws_server.WSKeepAlive, msg *ws_server.Message) {
		uids := server.GetUidByConn()                              // 获得所有用户
		u := server.GetUidByConn(conn)                             // 获得当前上线的用户id
		err := server.Send(ws_server.NewMessage(u[0], uids), conn) // 向当前上线用户发送在线用户列表
		if err != nil {
			server.Info("send msg to online user failed: ", err)
		}
	}
}
